// import * as ReactDom from 'react-dom'

// 渲染的入口调用栈

// 1. ReactDom.render(ReactElement, container)
/**
 legacyRenderSubTreeIntoContainer -> legacyCreateRootFromContainer -> createLegacyRoot -> new ReactDOMBlockingRoot -> createRootImpl -> createContainer
 */

/**
 ReactDom.render()，有返回值，渲染的ReactNode的实例
 1. 类组件：类实例
 2. 函数组件：null
 3. 元素组件：元素
 */


// 2. ReactDom.createBlockingRoot(container).render(ReactElement)
/**
 new ReactDOMBlockingRoot -> createRootImpl -> createContainer
 */


// 3. ReactDom.createRoot(container).render(ReactElement)
/**
 new ReactDOMRoot -> createRootImpl -> createContainer
 */

// 通过上面的描述，三种入口最终都会收敛到createRootImpl中，每个模式下都有自己的tag标记
// LegacyRoot: 0
// BlockingRoot: 1
// ConcurrentRoot: 2


// =================
// createContainer调用栈

// createContainer -> createFiberRoot -> new FiberRootNode (创建根fiber) & createHostRootFiber
// createHostRootFiber -> createFiber -> new FiberNode (创建普通元素fiber)

